java如何使用IDE在storm production集群中提交拓扑
在使用IDE向生产集群提交拓扑时,我面临一个问题Must submit topologies using the 'storm' client script so that StormSubmitter knows which jar to upload
,而如果我在命令行中使用storm jar
命令执行同样的操作,它的运行就像天堂一样。我在githublink中看到过同样的例子
对于提交拓扑,我使用这些行集
conf.put(Config.NIMBUS_HOST, NIMBUS_NODE);
conf.put(Config.NIMBUS_THRIFT_PORT,6627);
conf.put(Config.STORM_ZOOKEEPER_PORT,2181);
conf.put(Config.STORM_ZOOKEEPER_SERVERS,ZOOKEEPER_ID);
conf.setNumWorkers(20);
conf.setMaxSpoutPending(5000);
StormSubmitter submitter = new StormSubmitter();
submitter.submitTopology("test", conf, builder.createTopology());
请告诉我这是否是正确的运行方法
# 1 楼答案
我没有为提交自己运行java代码,但我检查了storm命令,它是一个python文件,运行java和http://nathanmarz.github.com/storm/doc/backtype/storm/StormSubmitter.html类
我认为您应该担心的唯一一件事是在执行时包含所有需要的库
# 2 楼答案
我们找到了解决办法。当我们运行“storm jar”时,它会触发storm的属性标志。提交的jar中的jar。因此,如果我们想以编程方式提交一个jar,那么只需这样设置标志
System.setProperty("storm.jar", <path-to-jar>);
例如:
# 3 楼答案
我已经根据@abhi和@Nishu Tayal的答案解决了这个问题,我想在这里发布我的代码:
接下来是一个测试,您必须首先将代码构建到JAR文件中
# 4 楼答案
为了向远程Storm集群提交拓扑,您需要将该jar上传到nimbus机器,然后使用NimbusClient将该jar提交到集群
您可以这样做:
下面是一个工作示例:Submitting a topology to Remote Storm Cluster